From b18b33ae8234982dcc4e694358cbcbc32c3e7e3a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Javier=20Jard=C3=B3n?= Date: Mon, 24 May 2010 04:04:10 +0200 Subject: [PATCH] Revert "Forward-port a GtkAdjustment compatibility fix" In the early 2.14.x releases, GtkAdjustment was changed to enforce that values are restricted to the range [lower, upper - page_size]. This has always been the documented behaviour, and the recommended practice is to set page_size to 0 when using adjustments for simple scalar values, like in a slider or spin button. Due to the large number of applications that are affected by this change, the behaviour has been reverted to the old behaviour in 2.14.3, with an explicit warning that this change will be reintroduced in 2.90. This reverts commit e6373738fc9c53c95e467a3681fcd3426fd94d13. https://bugzilla.gnome.org/show_bug.cgi?id=619474 --- README.in | 14 ++++------- gtk/gtkadjustment.c | 6 ++++- gtk/gtkcombobox.c | 8 +++---- gtk/gtkiconview.c | 52 ++++++++++++++--------------------------- gtk/gtkrange.c | 6 ----- gtk/gtkscrolledwindow.c | 8 ++----- gtk/gtkspinbutton.c | 9 ------- gtk/gtktreeview.c | 22 ++++++----------- 8 files changed, 41 insertions(+), 84 deletions(-) diff --git a/README.in b/README.in index f7108acbe7..bcd8c4efba 100644 --- a/README.in +++ b/README.in @@ -111,15 +111,11 @@ Release notes for 2.14 to GTK_SENSITIVITY_ON, so that the button is always sensitive or GTK_SENSITIVITY_OFF to make it insensitive respectively. -* In the early 2.14.x releases, GtkAdjustment was changed to enforce - that values are restricted to the range [lower, upper - page_size]. - This has always been the documented behaviour, and the recommended - practice is to set page_size to 0 when using adjustments for simple - scalar values, like in a slider or spin button. - Due to the large number of applications that are affected by this - change, the behaviour has been reverted to the old behaviour in - 2.14.3, with an explicit warning that this change will be - reintroduced in 2.90. +* GtkAdjustment now enforces that values are restricted to the + range [lower, upper - page_size]. This has always been the documented + behaviour, and the recommended practice is to set page_size to 0 + when using adjustments for simple scalar values, like in a slider + or spin button. * gdk-pixbuf will use GIO for mime type detection if possible. For this to work, shared-mime-info needs to be installed and XDG_DATA_DIRS diff --git a/gtk/gtkadjustment.c b/gtk/gtkadjustment.c index 49f5008ec2..dd1b3f609d 100644 --- a/gtk/gtkadjustment.c +++ b/gtk/gtkadjustment.c @@ -359,7 +359,11 @@ gtk_adjustment_set_value (GtkAdjustment *adjustment, { g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment)); - value = CLAMP (value, adjustment->lower, adjustment->upper); + /* don't use CLAMP() so we don't end up below lower if upper - page_size + * is smaller than lower + */ + value = MIN (value, adjustment->upper - adjustment->page_size); + value = MAX (value, adjustment->lower); if (value != adjustment->value) { diff --git a/gtk/gtkcombobox.c b/gtk/gtkcombobox.c index fd92dd0d5d..23b159b88b 100644 --- a/gtk/gtkcombobox.c +++ b/gtk/gtkcombobox.c @@ -4056,13 +4056,13 @@ gtk_combo_box_list_auto_scroll (GtkComboBox *combo_box, adj->lower < adj->value) { value = adj->value - (tree_view->allocation.x - x + 1); - gtk_adjustment_set_value (adj, CLAMP (value, adj->lower, adj->upper - adj->page_size)); + gtk_adjustment_set_value (adj, value); } else if (x >= tree_view->allocation.x + tree_view->allocation.width && adj->upper - adj->page_size > adj->value) { value = adj->value + (x - tree_view->allocation.x - tree_view->allocation.width + 1); - gtk_adjustment_set_value (adj, CLAMP (value, 0.0, adj->upper - adj->page_size)); + gtk_adjustment_set_value (adj, MAX (value, 0.0)); } } @@ -4073,13 +4073,13 @@ gtk_combo_box_list_auto_scroll (GtkComboBox *combo_box, adj->lower < adj->value) { value = adj->value - (tree_view->allocation.y - y + 1); - gtk_adjustment_set_value (adj, CLAMP (value, adj->lower, adj->upper - adj->page_size)); + gtk_adjustment_set_value (adj, value); } else if (y >= tree_view->allocation.height && adj->upper - adj->page_size > adj->value) { value = adj->value + (y - tree_view->allocation.height + 1); - gtk_adjustment_set_value (adj, CLAMP (value, 0.0, adj->upper - adj->page_size)); + gtk_adjustment_set_value (adj, MAX (value, 0.0)); } } } diff --git a/gtk/gtkiconview.c b/gtk/gtkiconview.c index ebb63a12b0..4f07208930 100644 --- a/gtk/gtkiconview.c +++ b/gtk/gtkiconview.c @@ -1496,7 +1496,7 @@ gtk_icon_view_size_allocate (GtkWidget *widget, hadjustment->upper = MAX (allocation->width, icon_view->priv->width); if (hadjustment->value > hadjustment->upper - hadjustment->page_size) - gtk_adjustment_set_value (hadjustment, MAX (0, hadjustment->upper - hadjustment->page_size)); + gtk_adjustment_set_value (hadjustment, hadjustment->upper - hadjustment->page_size); vadjustment->page_size = allocation->height; vadjustment->page_increment = allocation->height * 0.9; @@ -1505,7 +1505,7 @@ gtk_icon_view_size_allocate (GtkWidget *widget, vadjustment->upper = MAX (allocation->height, icon_view->priv->height); if (vadjustment->value > vadjustment->upper - vadjustment->page_size) - gtk_adjustment_set_value (vadjustment, MAX (0, vadjustment->upper - vadjustment->page_size)); + gtk_adjustment_set_value (vadjustment, vadjustment->upper - vadjustment->page_size); if (gtk_widget_get_realized (widget) && icon_view->priv->scroll_to_path) @@ -1668,17 +1668,11 @@ gtk_icon_view_expose (GtkWidget *widget, static gboolean rubberband_scroll_timeout (gpointer data) { - GtkIconView *icon_view; - gdouble value; - - icon_view = data; - - value = MIN (icon_view->priv->vadjustment->value + - icon_view->priv->scroll_value_diff, - icon_view->priv->vadjustment->upper - - icon_view->priv->vadjustment->page_size); + GtkIconView *icon_view = data; - gtk_adjustment_set_value (icon_view->priv->vadjustment, value); + gtk_adjustment_set_value (icon_view->priv->vadjustment, + icon_view->priv->vadjustment->value + + icon_view->priv->scroll_value_diff); gtk_icon_view_update_rubberband (icon_view); @@ -4380,7 +4374,7 @@ gtk_icon_view_scroll_to_path (GtkIconView *icon_view, { gint x, y; gint focus_width; - gfloat offset, value; + gfloat offset; gtk_widget_style_get (GTK_WIDGET (icon_view), "focus-line-width", &focus_width, @@ -4390,17 +4384,15 @@ gtk_icon_view_scroll_to_path (GtkIconView *icon_view, offset = y + item->y - focus_width - row_align * (GTK_WIDGET (icon_view)->allocation.height - item->height); - value = CLAMP (icon_view->priv->vadjustment->value + offset, - icon_view->priv->vadjustment->lower, - icon_view->priv->vadjustment->upper - icon_view->priv->vadjustment->page_size); - gtk_adjustment_set_value (icon_view->priv->vadjustment, value); + + gtk_adjustment_set_value (icon_view->priv->vadjustment, + icon_view->priv->vadjustment->value + offset); offset = x + item->x - focus_width - col_align * (GTK_WIDGET (icon_view)->allocation.width - item->width); - value = CLAMP (icon_view->priv->hadjustment->value + offset, - icon_view->priv->hadjustment->lower, - icon_view->priv->hadjustment->upper - icon_view->priv->hadjustment->page_size); - gtk_adjustment_set_value (icon_view->priv->hadjustment, value); + + gtk_adjustment_set_value (icon_view->priv->hadjustment, + icon_view->priv->hadjustment->value + offset); gtk_adjustment_changed (icon_view->priv->hadjustment); gtk_adjustment_changed (icon_view->priv->vadjustment); @@ -6485,7 +6477,6 @@ gtk_icon_view_autoscroll (GtkIconView *icon_view) { gint px, py, x, y, width, height; gint hoffset, voffset; - gfloat value; gdk_window_get_pointer (GTK_WIDGET (icon_view)->window, &px, &py, NULL); gdk_window_get_geometry (GTK_WIDGET (icon_view)->window, &x, &y, &width, &height, NULL); @@ -6500,19 +6491,12 @@ gtk_icon_view_autoscroll (GtkIconView *icon_view) hoffset = MAX (px - (x + width - 2 * SCROLL_EDGE_SIZE), 0); if (voffset != 0) - { - value = CLAMP (icon_view->priv->vadjustment->value + voffset, - icon_view->priv->vadjustment->lower, - icon_view->priv->vadjustment->upper - icon_view->priv->vadjustment->page_size); - gtk_adjustment_set_value (icon_view->priv->vadjustment, value); - } + gtk_adjustment_set_value (icon_view->priv->vadjustment, + icon_view->priv->vadjustment->value + voffset); + if (hoffset != 0) - { - value = CLAMP (icon_view->priv->hadjustment->value + hoffset, - icon_view->priv->hadjustment->lower, - icon_view->priv->hadjustment->upper - icon_view->priv->hadjustment->page_size); - gtk_adjustment_set_value (icon_view->priv->hadjustment, value); - } + gtk_adjustment_set_value (icon_view->priv->hadjustment, + icon_view->priv->hadjustment->value + hoffset); } diff --git a/gtk/gtkrange.c b/gtk/gtkrange.c index 6d94219746..42dfa1c3dd 100644 --- a/gtk/gtkrange.c +++ b/gtk/gtkrange.c @@ -1207,9 +1207,6 @@ gtk_range_set_range (GtkRange *range, value = MIN (value, MAX (range->adjustment->lower, range->layout->fill_level)); - value = CLAMP (value, range->adjustment->lower, - (range->adjustment->upper - range->adjustment->page_size)); - gtk_adjustment_set_value (range->adjustment, value); gtk_adjustment_changed (range->adjustment); } @@ -1234,9 +1231,6 @@ gtk_range_set_value (GtkRange *range, value = MIN (value, MAX (range->adjustment->lower, range->layout->fill_level)); - value = CLAMP (value, range->adjustment->lower, - (range->adjustment->upper - range->adjustment->page_size)); - gtk_adjustment_set_value (range->adjustment, value); } diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c index bf3cda9b1b..11adb7aa62 100644 --- a/gtk/gtkscrolledwindow.c +++ b/gtk/gtkscrolledwindow.c @@ -1220,8 +1220,6 @@ gtk_scrolled_window_scroll_child (GtkScrolledWindow *scrolled_window, break; } - value = CLAMP (value, adjustment->lower, adjustment->upper - adjustment->page_size); - gtk_adjustment_set_value (adjustment, value); return TRUE; @@ -1513,13 +1511,11 @@ gtk_scrolled_window_scroll_event (GtkWidget *widget, if (range && gtk_widget_get_visible (range)) { GtkAdjustment *adj = GTK_RANGE (range)->adjustment; - gdouble delta, new_value; + gdouble delta; delta = _gtk_range_get_wheel_delta (GTK_RANGE (range), event->direction); - new_value = CLAMP (adj->value + delta, adj->lower, adj->upper - adj->page_size); - - gtk_adjustment_set_value (adj, new_value); + gtk_adjustment_set_value (adj, adj->value + delta); return TRUE; } diff --git a/gtk/gtkspinbutton.c b/gtk/gtkspinbutton.c index cebdd551b4..32934bcf89 100644 --- a/gtk/gtkspinbutton.c +++ b/gtk/gtkspinbutton.c @@ -1702,13 +1702,6 @@ gtk_spin_button_new_with_range (gdouble min, return GTK_WIDGET (spin); } -static void -warn_nonzero_page_size (GtkAdjustment *adjustment) -{ - if (gtk_adjustment_get_page_size (adjustment) != 0.0) - g_warning ("GtkSpinButton: setting an adjustment with non-zero page size is deprecated"); -} - /* Callback used when the spin button's adjustment changes. We need to redraw * the arrows when the adjustment's range changes, and reevaluate our size request. */ @@ -1720,7 +1713,6 @@ adjustment_changed_cb (GtkAdjustment *adjustment, gpointer data) spin_button = GTK_SPIN_BUTTON (data); spin_button->timer_step = spin_button->adjustment->step_increment; - warn_nonzero_page_size (adjustment); gtk_widget_queue_resize (GTK_WIDGET (spin_button)); } @@ -1760,7 +1752,6 @@ gtk_spin_button_set_adjustment (GtkSpinButton *spin_button, G_CALLBACK (adjustment_changed_cb), spin_button); spin_button->timer_step = spin_button->adjustment->step_increment; - warn_nonzero_page_size (adjustment); } gtk_widget_queue_resize (GTK_WIDGET (spin_button)); diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index 09f2067968..6192e84d28 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -3675,7 +3675,6 @@ gtk_tree_view_vertical_autoscroll (GtkTreeView *tree_view) GdkRectangle visible_rect; gint y; gint offset; - gfloat value; gdk_window_get_pointer (tree_view->priv->bin_window, NULL, &y, NULL); y += tree_view->priv->dy; @@ -3691,9 +3690,8 @@ gtk_tree_view_vertical_autoscroll (GtkTreeView *tree_view) return; } - value = CLAMP (tree_view->priv->vadjustment->value + offset, 0.0, - tree_view->priv->vadjustment->upper - tree_view->priv->vadjustment->page_size); - gtk_adjustment_set_value (tree_view->priv->vadjustment, value); + gtk_adjustment_set_value (tree_view->priv->vadjustment, + MAX (tree_view->priv->vadjustment->value + offset, 0.0)); } static gboolean @@ -3702,7 +3700,6 @@ gtk_tree_view_horizontal_autoscroll (GtkTreeView *tree_view) GdkRectangle visible_rect; gint x; gint offset; - gfloat value; gdk_window_get_pointer (tree_view->priv->bin_window, &x, NULL, NULL); @@ -3718,9 +3715,8 @@ gtk_tree_view_horizontal_autoscroll (GtkTreeView *tree_view) } offset = offset/3; - value = CLAMP (tree_view->priv->hadjustment->value + offset, - 0.0, tree_view->priv->hadjustment->upper - tree_view->priv->hadjustment->page_size); - gtk_adjustment_set_value (tree_view->priv->hadjustment, value); + gtk_adjustment_set_value (tree_view->priv->hadjustment, + MAX (tree_view->priv->hadjustment->value + offset, 0.0)); return TRUE; @@ -8938,11 +8934,7 @@ gtk_tree_view_clamp_column_visible (GtkTreeView *tree_view, } } - gtk_adjustment_set_value (tree_view->priv->hadjustment, - CLAMP (x, - tree_view->priv->hadjustment->lower, - tree_view->priv->hadjustment->upper - - tree_view->priv->hadjustment->page_size)); + gtk_adjustment_set_value (tree_view->priv->hadjustment, x); } else { @@ -11596,9 +11588,9 @@ gtk_tree_view_scroll_to_point (GtkTreeView *tree_view, vadj = tree_view->priv->vadjustment; if (tree_x != -1) - gtk_adjustment_set_value (hadj, CLAMP (tree_x, hadj->lower, hadj->upper - hadj->page_size)); + gtk_adjustment_set_value (hadj, tree_x); if (tree_y != -1) - gtk_adjustment_set_value (vadj, CLAMP (tree_y, vadj->lower, vadj->upper - vadj->page_size)); + gtk_adjustment_set_value (vadj, tree_y); } /** -- 2.30.2